package com.liangtian.mdm.system.menu.dao;


import com.liangtian.mdm.base.BaseDao;
import com.liangtian.mdm.system.menu.model.Menu;
import com.liangtian.mdm.system.menu.model.MenuShow;
import org.springframework.stereotype.Repository;

import java.util.List;
import java.util.Map;

@Repository
public interface MenuDao extends BaseDao<Menu> {

    /**
     * 插入菜单表
     *
     * @param menu
     */
    public void insertMenu(Menu menu);

    /**
     * 插入菜单表
     *
     * @param menu
     */
    public void batchDeleteMenuByModelId(Map map);

    /**
     * 查询id
     *
     * @return
     */
    public String queryMenuId();

    /**
     * 按层级查询菜单
     *
     * @param menu
     * @return
     */
    public List<Menu> queryMenuByGrade(Menu menu);

    public List<MenuShow> queryMenuShowByGrade(Menu menu);

    /**
     * 查询最大的排序号
     *
     * @param grade
     * @return
     */
    public String queryMaxOrderByGrade(String grade);

    /**
     * 根据模型id删除菜单
     *
     * @param modelId
     */
    public void deleteMenuByModelId(String modelId);

    /**
     * 查询菜单树
     *
     * @param menu
     * @return
     */
    public List<Menu> queryMenuTree(Menu menu);

    /**
     * 左侧列表查询
     *
     * @param menu
     * @return
     */
    public List<Menu> queryMenuByContion(Menu menu);

    /**
     * 左侧列表总数查询
     *
     * @param menu
     * @return
     */
    public List<Menu> queryMenuByContionCount(Menu menu);

    /**
     * 前台插入菜单
     *
     * @param menu
     */
    public void insertMenuForm(Menu menu);

    /**
     * 修改菜单状态
     *
     * @param map
     */
    public void updateMenuStatus(Menu menu);

    /**
     * 根据id查询
     *
     * @param menu
     * @return
     */
    public Menu queryMenuById(Menu menu);

    /**
     * 修改
     *
     * @param menu
     */
    public void updateMenu(Menu menu);

    Menu queryOne(String MenuId);

    Menu queryThirMenu(Map<String, Object> param);

    /**
     * 根据modelId查询审核页面链接
     *
     * @param modelId
     * @return
     */
    public Menu queryMenuUrlByModelId(Map<String, Object> param);

    public List<MenuShow> queryMenuShowByPermission(Map<String, Object> param);

    public Menu queryMenuByModelIdMenuType(Menu menu);

    /**
     * 根据模型id查询菜单
     *
     * @param modelId
     */
    public List<Menu> queryMenuByModelId(String modelId);

    //根据模型id删除菜单
    public void deleteMenuByMId(String modelId);
}
